home *** CD-ROM | disk | FTP | other *** search
/ Network Supervisor's Toolkit / Network Supervisor's Toolkit.iso / menus / dougmenu / dougmenu.txt < prev    next >
Text File  |  1996-07-10  |  44KB  |  956 lines

  1.                 DougMenu Menuing Software Version 1.77
  2.                       Released December 14, 1994
  3. Program and documentation are copyright 1991-1994
  4.                              Douglas Bell 
  5.  
  6. [Terms of Use for DougMenu v1.77]
  7.  
  8.      This version of DougMenu is a freeware product.  It should be
  9.      distributed at no charge, besides that of a reasonable media fee
  10.      when applicable.  No one should ever charge a fee for the program
  11.      itself.
  12.  
  13.      Users are free to modify the DougMenu package for their own use
  14.      and are allowed to install a modified DougMenu package on any
  15.      number of computers within a single business or organization. 
  16.      However, any business or organization which does this should
  17.      retain at least one unaltered copy of the DougMenu distribution
  18.      package.
  19.  
  20.      THERE IS NO WARRANTY, EXPRESSED OR IMPLIED, FOR DOUGMENU.  WHILE
  21.      THE AUTHOR HAS ATTEMPTED TO PRODUCE AN ERROR FREE PROGRAM, THE
  22.      AUTHOR ASSUMES NO RESPONSIBILITY FOR ANY DAMAGE THAT THIS PROGRAM
  23.      MIGHT CAUSE.
  24.  
  25.  
  26. [Contacting the Author]
  27.  
  28.      I am always interested in hearing bug reports, feature requests,
  29.      and things like that.  I can be reached in any of the following
  30.      ways:
  31.           email:         dm@wariat.org
  32.           telephone:     +1 216 371 7772
  33.           post:          Douglas Bell
  34.                          1726 Coventry Road #3
  35.                          Cleveland Heights, Ohio 44118-1130
  36.                          U.S.A.
  37.  
  38.  
  39. [Obtaining New Versions]
  40.  
  41.      I have an official ftp site for DougMenu.  The newest versions of
  42.      DougMenu can be found on ftp.wariat.org in the /pub/dougmenu
  43.      directory.
  44.  
  45.      There is also a DougMenu World Wide Web home page.  The URL for
  46.      this document is: http://www.wariat.org/dm/dm.html.
  47.  
  48.      Also, included at the end of this document is a DougMenu order
  49.      form.  This offers several plans where you pay me money, and I
  50.      make sure you have the newest version of DougMenu.
  51. [Table of Contents]
  52.  
  53. Terms of Use for DougMenu v1.77 . . . . . . . . . . . . . . . . . . .1
  54.   Contacting the Author . . . . . . . . . . . . . . . . . . . . . . .1
  55.   Obtaining New Versions. . . . . . . . . . . . . . . . . . . . . . .1
  56. What is Dougmenu? . . . . . . . . . . . . . . . . . . . . . . . . . .3
  57.   Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
  58.   What Is New in Version 1.77 . . . . . . . . . . . . . . . . . . . .3
  59. Installing DougMenu . . . . . . . . . . . . . . . . . . . . . . . . .4
  60.   Configuring DougMenu. . . . . . . . . . . . . . . . . . . . . . . .4
  61.   Further Modifying DMENU.BAT . . . . . . . . . . . . . . . . . . . .5
  62. Starting a Menu Script. . . . . . . . . . . . . . . . . . . . . . . .5
  63.   Writing a Simple Menu Script. . . . . . . . . . . . . . . . . . . .6
  64.   What Do Menus Look Like When They Are Displayed?. . . . . . . . . .7
  65.   Positioning Menus & Choosing Menu Colors. . . . . . . . . . . . . .7
  66. Advanced Commands . . . . . . . . . . . . . . . . . . . . . . . . . .9
  67.   Parsing Commands. . . . . . . . . . . . . . . . . . . . . . . . . .9
  68.   External Commands . . . . . . . . . . . . . . . . . . . . . . . . 11
  69.   Execution Commands. . . . . . . . . . . . . . . . . . . . . . . . 16
  70.   Logging Out of Netware Servers. . . . . . . . . . . . . . . . . . 18
  71. Order Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94. This document assumes a certain degree of familiarity with MS-DOS
  95. based computing.  It is intended as a reference for a PC administrator
  96. instead of a tutorial for a neophyte user.  Information about
  97. obtaining a more complete manual is available at the end of this
  98. document. [What is Dougmenu?]
  99.  
  100.      DougMenu is a simple, easy to use menuing system for MS-DOS
  101.      compatible computers.  DougMenu was originally created as a
  102.      replacement for the menu software that came with Novell Netware. 
  103.      Since then it has evolved into a powerful software package that
  104.      can be used on networked or stand alone PC's.
  105.  
  106.      DougMenu requires 100k of disk space, 256k of memory, and MS-DOS
  107.      version 3.3 or higher compatibility.
  108.  
  109.  
  110. [Features]
  111.  
  112.      Here are some reasons why you might want to use Dougmenu: 
  113.  
  114.      1.   No memory overhead when launching applications.
  115.      2.   Supports many different languages.
  116.      3.   Built-in screen saver that won't conflict with TSR programs.
  117.      4.   Can run TSR programs without fragmenting memory.
  118.      5.   Controls user access.
  119.      6.   Full mouse support.
  120.      7.   User input capabilities.
  121.      8.   Aware of Novell networks.
  122.      9.   Minimal batch file litter.
  123.      10.  Easily customized colors and layouts.
  124.      11.  Small, Fast, & Free!
  125.  
  126.  
  127. [What Is New In Version 1.77]
  128.  
  129.      Well, there aren't any new script language commands in version
  130.      1.77, but there are many new things included with this release.
  131.  
  132.      1.   I fixed the problem with nesting #if_username statements.
  133.      2.   I fixed the problem using the #if_exist statement in
  134.           executable text.
  135.      3.   I fixed the problem that caused menu scripts to be displayed
  136.           as the screen backdrop file when using the 1.2 pre-release
  137.           VLM Netware requester for DOS with menu scripts that had
  138.           #include commands looking at a network drives.  I'm sorry it
  139.           took so long to track this one down, but I had a devil of a
  140.           time reproducing the problem.
  141.      4.   I made a nifty new documentation file.  I had to delay the
  142.           release of 1.77 two days because I was trying to make sure
  143.           this documentation looked at least somewhat professional. 
  144.           I'm starting to think that writing good documentation is
  145.           harder than writing good code. 
  146.      5.   I wanted to announce the WWW home page and ftp site.
  147.      6.   I also wanted to announce the new DougMenu registration
  148.           options, products and services. [Installing DougMenu]
  149.  
  150.      Before you can use DougMenu, you have to install it.  Installing
  151.      DougMenu is as simple as copying the distribution package files
  152.      into a directory on your computer or server.  
  153.  
  154.      The file FILES.LST that comes in the DougMenu distribution
  155.      package lists all of files that should be in the package.  You
  156.      are not required to copy all the files into the directory if you
  157.      don't want to do so.  See the [Terms of Use] section at the
  158.      beginning of this document for details.
  159.  
  160.      There are four files which are crucial to the workings of
  161.      DougMenu.  Two files, DMENU.BAT and DOUGMENU.EXE come in the
  162.      distribution package.  The third is a menu script which you will
  163.      need to create after installing DougMenu, and the fourth is a
  164.      temporary batch file which will be created by DougMenu.
  165.  
  166.  
  167. [Configuring DougMenu]
  168.  
  169.      Once the DougMenu files have been placed in a directory, DougMenu
  170.      needs to be configured.  To configure DougMenu, edit the
  171.      DMENU.BAT batch file.  Two lines need to be adjusted to make
  172.      DougMenu work.  These lines are marked with the '*' character in
  173.      the following listing:
  174.  
  175.                @echo off
  176.                if %1.==. goto error
  177.           **   set t=c:\temp.fil
  178.                :loop
  179.           **   c:\menu\dougmenu.exe %1 %2 %3
  180.                if errorlevel==2 %t%
  181.                if errorlevel==1 goto quit
  182.                call %t%
  183.                goto loop
  184.                :error
  185.                echo No menu script was specified.
  186.                :quit
  187.                set t=
  188.  
  189.      The "set t=" line tells DougMenu where it can make a temporary
  190.      batch file.  Change this line so that the 't' environment
  191.      variable is assigned a value which is a valid drive, path, and
  192.      filename on your computer system.  The name of the temporary file
  193.      name should end with the extension ".fil".  
  194.  
  195.      The line that run DOUGMENU.EXE needs to know where DougMenu was
  196.      installed on your computer system.  Edit DMENU.BAT so that the
  197.      location of DOUGMENU.EXE is correctly indicated in the batch
  198.      file.
  199. [Further Modifying DMENU.BAT]
  200.  
  201.      DMENU.BAT is just a DOS batch file and can be edited into many
  202.      different working configurations.  Feel free to change DMENU.BAT
  203.      in any way that will help your system.  Here are some possible
  204.      configurations:
  205.  
  206.      1)   If you want to make sure that a user goes to a specific
  207.           directory before running any application, insert a "cd"
  208.           command after the :loop label in the DMENU.BAT file.
  209.  
  210.      2)   If you want to show a broadcast a message every time the
  211.           menu system is started, you could use the DOS "type" command
  212.           followed by a "pause" command at the beginning of the
  213.           DMENU.BAT file to do this.
  214.  
  215.      3)   If you are using a Novell Netware network and you want to
  216.           consolidate temporary batch files into a single shared
  217.           directory on the server, place the connection number into a
  218.           DOS environment variable in the server login script.  Then,
  219.           use this variable in the file name of the temporary batch
  220.           file when setting the 't' environment variable.
  221.           (e.g. set t=u:\apps\menu\temp%connection%.fil )
  222.  
  223.  
  224. [Starting a Menu Script]
  225.  
  226.      After DougMenu is configured for your system, you will need a
  227.      menu script.  Menu scripts are used by DOUGMENU.EXE to create a
  228.      user interface.  The DougMenu distribution package comes with a
  229.      sample menu script called SAMPLE.MNU.  To use this menu script,
  230.      run DMENU.BAT with a command line parameter that specifies the
  231.      drive, path, and file name of the menu script. (e.g. dmenu
  232.      u:\apps\menu\sample.mnu)  It is important to specify the drive
  233.      and path when starting a menu script.
  234.  
  235.      You might have noticed that this menu script has the extension
  236.      ".MNU".  Menu scripts don't have to end in with this extension.
  237.      However, if DougMenu is given a menu script name without an
  238.      extension and it can't find the script file, DougMenu will try
  239.      looking for the same file again, but with the ".MNU" extension. 
  240.  
  241. [Writing a Simple Menu Script]
  242.  
  243.      A DougMenu menu script is plain text file that can be created
  244.      with any text editor.  Menu scripts are used by DougMenu to
  245.      display a user interface.
  246.  
  247.      The basic building block of a DougMenu menu script is called a
  248.      menu structure.  All DougMenu menu scripts must contain at least
  249.      one of these structures.  A menu structure begins with a
  250.      declaration line that starts with a '%', (e.g. %My First Menu).
  251.  
  252.      Lines following the '%' menu declaration line are the body of the
  253.      menu structure.  In the body, there are lines that start right
  254.      away with text and there are lines which are indented and have
  255.      spaces or tabs before any text.  The non-indented lines in the
  256.      menu body are the "items" of the menu.  They will be displayed as
  257.      visible lines on the menu when the menu is displayed.  Each item
  258.      line is usually followed with one or more indented lines of text. 
  259.      These sets of indented lines are called "blocks of executable
  260.      text" or just "executable text."
  261.  
  262.      The content of the item lines should be descriptive so as to tell
  263.      a user what action they can expect if they select the item.  The
  264.      blocks of executable text contain scripted actions associated
  265.      with the menu items.  The commands in the executable text are
  266.      usually just DOS batch file commands.  The following basic menu
  267.      script illustrates the declaration of a menu structure, menu
  268.      items, and blocks of executable text:
  269.  
  270.      %My First Menu
  271.      My First Option
  272.        echo This was my first option
  273.        pause
  274.      Subtitle Option
  275.      WordPerfect 5.1
  276.        d:
  277.        cd \documents
  278.        c:\wp51\wp.exe
  279.  
  280.      Notice that the second item, "Subtitle Option", is not followed
  281.      by any executable text.  When this is the case, the item will not
  282.      be selectable and will be displayed as a subtitle in the menu
  283.      window.
  284.  
  285.      When a script is started, the first menu structure in the menu
  286.      script will be displayed.  Other menu structures can be accessed
  287.      from the items in the first menu.  To create a link from an item
  288.      to a menu, the executable text for the item should contain a line
  289.      that begins with a '%' character followed by the title of the
  290.      menu to be opened.  This is demonstrated in the following
  291.      listing: %The first menu
  292.      Launch another menu
  293.        %another menu
  294.      Another Option
  295.        echo This is normal executable text
  296.        pause
  297.  
  298.      %Another Menu
  299.      Its Items
  300.        echo More batch file stuff.
  301.        pause
  302.  
  303.      Items on secondary menus can open even more menus.  By linking
  304.      many menus together, menu scripts can become very large.  Menu
  305.      script size is only limited by free conventional memory.  A good
  306.      rule of thumb is that your menu scripts should be no larger than
  307.      free conventional memory less 100k bytes.  This leaves plenty of
  308.      room for some very large menu scripts on most systems. 
  309.  
  310.      But while a script can become very large and can contain a very
  311.      large number of menu structures, the current display engine in
  312.      DougMenu limits the number of menus that can be viewed at one
  313.      time to 10 menu windows.  If a user wants to open another menu,
  314.      he will have to close one of the windows that is already open.  
  315.  
  316.  
  317. [What Do Menus Look Like When They Are Displayed?]
  318.  
  319.      The easiest way to discover what menu windows look like when they
  320.      are displayed is to run a few sample menu scripts.  If you run
  321.      the SAMPLE.MNU menu script, you will see what the menu windows
  322.      look like, as well as see some other features of the display
  323.      screen such as the header box and the footer bar.  These things
  324.      should be fairly intuitive when you view the sample menu.
  325.  
  326.  
  327. [Positioning Menus & Choosing Menu Colors]
  328.  
  329.      The default way that menu windows are displayed is with a blue
  330.      and white color scheme and centered in the middle of the screen. 
  331.      However when declaring a menu structure, optional parameters can
  332.      be placed after the menu title on the declaration line to change
  333.      the position or color scheme.  These parameters come after the
  334.      menu title and are offset by commas like this:
  335.  
  336.      %Menu Title,<x_position>,<y_position>,<palette_number>
  337.  
  338.      The <x_position> and <y_position> parameters will position the
  339.      upper left corner of the menu window relative to the upper left
  340.      corner of the screen.  There is an exception to this.  A value of
  341.      255 will center the menu with respect to that axis.  So the
  342.      following menu declaration:
  343.      %Horizontally Centered Menu,255,5
  344.  
  345.      would cause the menu to be centered horizontally and be 5 lines
  346.      down from the top of the screen.  Since the centering is the
  347.      default behavior, the same effect could be created like this:
  348.  
  349.      %Another Horizontally Centered Menu,,5
  350.  
  351.      DougMenu limits the places where a menu can be placed.  Menu
  352.      windows cannot be located on the header box or on the footer bar. 
  353.      Menus cannot be located off the edge of the screen, either. 
  354.      DougMenu will try to place the menu as close as possible to the
  355.      requested position in these situations.
  356.  
  357.      The positioning parameters can be omitted entirely if you just
  358.      want to specify the color palette.  The following example shows
  359.      how to set the palette for a menu without affecting where the
  360.      menu is positioned:
  361.  
  362.      %Colored Menu,,,3
  363.  
  364.      The <palette_number> parameter should be a value between 0 and 9.
  365.      The default blue and white color scheme is palette is 0. If no
  366.      palette is specified when a menu structure is declared, it will
  367.      be drawn using the default palette.
  368.  
  369.      Palettes 8 and 9 are used for monochrome display adapters.  If
  370.      DougMenu detects a monochrome display adapter, it will use
  371.      palettes 8 and 9 for the menus and ignore the <palette_number>
  372.      parameter on all menus.
  373.  
  374. [Advanced Commands]
  375.  
  376.      DougMenu provides many advanced commands which can be used to
  377.      modify the user interface or to make a menu script more flexible. 
  378.      The advanced commands in DougMenu can be divided into three
  379.      categories; parsing commands, external commands, and execution
  380.      commands.
  381.  
  382.  
  383. [Parsing Commands]
  384.  
  385.      Parsing commands affect the way that DOUGMENU.EXE reads a menu
  386.      script.  All parsing commands are evaluated as the menu script is
  387.      read and before any menus are displayed.  The action of parsing
  388.      commands depends on their location within the menu script.  All
  389.      parsing commands other than the semi-colon comments cannot be
  390.      indented.
  391.  
  392.      ;    Semi-colons are used to delimit script comments.  DougMenu
  393.           will ignore semicolon characters and any text that follows
  394.           on the same line.  This can cause trouble with the DOS
  395.           "path" and "assign" commands.  See #comments and
  396.           #nocomments.
  397.  
  398.      #comments
  399.           This command restores the comment behavior of semi-colons. 
  400.           See the #nocomments command.
  401.  
  402.      #if <conditional statement>
  403.           The DougMenu #if statement is used to skip over or ignore
  404.           portions of a menu script based on a conditional statement. 
  405.           If the conditional statement is true, DOUGMENU.EXE continues
  406.           reading the menu script as if nothing happened.  If the
  407.           condition fails, DOUGMENU.EXE will ignore all subsequent
  408.           menu lines until it finds an #endif or an #else command,
  409.           after which it will resume parsing the menu script.
  410.  
  411.           #if statements can be nested.  If a failed #if statement is
  412.           followed by another #if statement, DougMenu will skip ahead
  413.           one #endif statement for the nested #if command, and then
  414.           look for another #endif statement to close the first #if
  415.           command before resuming the script.
  416.  
  417.           There are three ways in which the conditional statements can
  418.           be constructed.
  419.                #if <string> == <string>
  420.                     The parser will continue parsing the menu script
  421.                     if the two strings are identical.  DOS environment
  422.                     variables may be used in these strings.
  423.                #if <string> != <string>
  424.                     As above except the parser will continue parsing
  425.                     only if the two string are not equal.
  426.                #if <string>
  427.                     Will continue parsing the menu script if the
  428.                     string contains any text.
  429.  
  430.      #if_member [!][servername/]<groupname>
  431.           The parser will continue parsing the menu script if the
  432.           computer is currently connected to a Netware server as a
  433.           member of the specified group.  If the group name is
  434.           preceded by an '!' character, parsing will continue only if
  435.           the computer is not connected to a Netware server as a
  436.           member of the group.
  437.  
  438.      #if_username [!][servername/]<username>
  439.           The parser will continue parsing the menu script if the
  440.           computer is currently connected to a Netware server as the
  441.           specified user.  If the specified user name is preceded by
  442.           an '!' character, parsing will continue only if the computer
  443.           is not connected to a Netware server as the user.
  444.           
  445.      #if_exist [!]<drive:\path\file>
  446.           The parser will continue parsing the menu script if the
  447.           specified directory or file exists.  If the parameter string
  448.           begins with an '!', the parser will continue parsing the
  449.           menu script only if the specified directory or file does not
  450.           exist.  To check for the existence of a drive letter, search
  451.           for a directory called '.' ( e.g. #if_exist d:. )
  452.  
  453.      #endif
  454.           This is used to close an #if statement.  If it is
  455.           superfluous, it will be ignored.
  456.  
  457.      #else
  458.           If the last #if statement failed, this will cause parsing to
  459.           continue at this point.  If the last #if statement was a
  460.           success, then this will make the parser skip forward until
  461.           the next #endif or #else statement is found.
  462.  
  463.      #include = <filename>[.mnu]
  464.           This command causes the text of the specified file to be
  465.           parsed at this point as if it were part of the primary
  466.           script.  Once the text of the included file is parsed,
  467.           DOUGMENU.EXE will return to reading the original file. 
  468.           #included scripts can #include other scripts, but do not
  469.           nest scripts more than five levels deep.  If the menu script
  470.           file name can't be found, Dougmenu will look for the file
  471.           with a ".mnu" extension.  If the file still cannot be found
  472.           an error message will be generated.
  473.  
  474.      #include_if_exist = <filename>[.mnu]
  475.           As above accept no error message will be generated if the
  476.           file cannot be found.
  477.  
  478.      #nocomments
  479.           This command will make DougMenu treat semicolons as normal
  480.           text instead of as comment delimiters.  Use this if you need
  481.           to put an "assign" or "path" command in a block of
  482.           executable text.  See the #comments command.
  483.  
  484.  
  485. [External Commands]
  486.  
  487.      External commands provide a wide range of general functionality. 
  488.      It is recommended that all external commands be placed at the top
  489.      of the script to avoid confusion, although they can also be
  490.      placed between or after the menu structures.  Most external
  491.      commands that have text string or file name parameters will
  492.      evaluate any DOS environment variables found in the parameters.
  493.  
  494.      Some external commands require color values.  Here is a list of
  495.      possible color values:
  496.  
  497.              0   -   black         8   -   dark grey
  498.              1   -   blue          9   -   lt. blue
  499.              2   -   green         10  -   lt. green
  500.              3   -   cyan          11  -   lt. cyan
  501.              4   -   red           12  -   lt. red
  502.              5   -   magenta       13  -   lt. magenta
  503.              6   -   brown         14  -   yellow
  504.              7   -   lt.grey       15  -   white
  505.  
  506.      Only the first 8 color values should be used as background
  507.      colors.  The second 8 colors repeat the first 8 colors but cause
  508.      the foreground color to flash.  I didn't plan it this way. 
  509.      That's just how PC's like to work.
  510.  
  511.      #backdrop color = <background_color>,<foreground_color>
  512.           This command accepts two color values.  These values will
  513.           change the color of the backdrop that is displayed behind
  514.           the menu windows.
  515.  
  516.      #backdrop char = <char_code>
  517.           This command can be used to change the character that is
  518.           displayed in the backdrop.  Most DOS manuals include a list
  519.           of character code values in an appendix.  Try using a value
  520.           of 1 for an interesting effect.
  521.  
  522.      #backdrop file = <filename>
  523.           This command can be used to display an ascii or ansi text
  524.           file as a backdrop for the DougMenu user interface.
  525.  
  526.      #cascade [= <X_vector>,<Y_vector>]
  527.           This changes the default menu placement to 10,5 and causes
  528.           all menus to be 'stair stepped' or cascaded down from that
  529.           location.  The x_vector and y_vector determine how far each
  530.           window will be offset from previous menu window.  The
  531.           default vector is 4,1.  This command can be followed by
  532.           "#default placement" to change the default position to
  533.           something other than 10,5.  This command should be located
  534.           before any menu structures.
  535.  
  536.      #default placement = <X_Position>,<Y_Position>
  537.           This option sets the default placement of all menu windows. 
  538.           A position value of 255 will cause windows to be centered
  539.           with respect to that axis.  This command should be located
  540.           before any menu structures.
  541.  
  542.      #default palette = <palette_number>
  543.           The palette number changes the default palette for any menu
  544.           structures parsed after this point in the script.  This
  545.           statement will be ignored if DougMenu detects a monochrome
  546.           display adapter.  This command should be located before any
  547.           menu structures.
  548.  
  549.      #display[,<x_position>,<y_position>,<palette_number>]
  550.        "Text to be displayed"
  551.        "Text to be displayed"
  552.        ...
  553.           This will display a text box on the DougMenu backdrop when
  554.           the user interface is started.  Text boxes are inert and
  555.           cannot be selected.  The #display should be followed with
  556.           lines of indented text which start and end with the quote
  557.           character.  The text block following the #display command
  558.           will be displayed in the box.  The display box will size
  559.           itself according to the number of lines and the longest line
  560.           of text.  Each line will be centered horizontally inside the
  561.           box. 
  562.  
  563.      #error palette = <palette_number>
  564.           The <palette_number> parameter changes the palette for all
  565.           error message boxes.  The default error palette is 2.  This
  566.           statement will be ignored on computers with monochrome
  567.           display adapters.
  568.  
  569.      #f<number> = <string>
  570.        executable text
  571.        executable text
  572.        ...
  573.           This defines an action for a function key.  The number
  574.           parameter should be the number of the function key ( 1-10 ). 
  575.           When a function key is defined, a footer bar is added to the
  576.           DougMenu user interface on the bottom line of the screen. 
  577.           The string parameter will be used to display a description
  578.           of the function key on the footer bar.  This command should
  579.           be followed with lines of indented executable text as if it
  580.           were a menu item.
  581.  
  582.      #footer color = <background_color>,<foreground_color>
  583.           This command accepts two color values.  These values will
  584.           change the color of the footer bar at the bottom of the
  585.           screen.  The footer bar will only be displayed if a function
  586.           key is defined with the "#f<number>" command.
  587.  
  588.      #footer highlight = <background_color>,<foreground_color>
  589.           This command accepts two color values.  These values will
  590.           change the color of a selected item on the footer bar. See
  591.           the #palette command for possible color values.
  592.  
  593.      #header message = <string>
  594.           The string in this statement will replace the DougMenu
  595.           version message in the header box.
  596.  
  597.      #header palette = <palette_number>
  598.           The <palette_number> parameter changes the palette for the
  599.           header box.  The default header palette is 1.  This
  600.           statement will be ignored on computers with monochrome
  601.           display adapters.
  602.  
  603.      #key <key_code>[,<extended_key_code>]
  604.        executable text
  605.        executable text
  606.        ...
  607.           This defines an action for keystrokes which have regular or
  608.           extended DOS keyboard codes.  DOS keyboard codes are usually
  609.           listed in an appendix of most DOS manuals.  To use an
  610.           extended key code values, place the extended key code value
  611.           after "0,".  This command should be followed with lines of
  612.           indented executable text as if it were a menu item.
  613.  
  614.      #language
  615.           This command allows the DougMenu user interface to be
  616.           tailored to support languages other than American English. 
  617.           Several language modules come with DougMenu.  To use these
  618.           files, simply add their contents to your script or use the
  619.           #include command.
  620.  
  621.           To create your own language module, translate the lines in
  622.           the ENGLISH.DML file.  Your #language module must have the
  623.           sample number of lines as the original language module.  Do
  624.           not incorporate DOS environment variables into a language
  625.           module.
  626.  
  627.           The last line on the language definition is the time/date
  628.           descriptor.  This line controls how the time and date string
  629.           will be displayed on the menus.  There are six descriptor
  630.           words that you can use in this line:
  631.                day_name            day_number
  632.                month_name          month_number
  633.                24_time             am_pm
  634.           The default string is:
  635.                day_name, month_name day_number, am_pm
  636.  
  637.           This would display the time and date as:   
  638.                Friday, June 17, 1:31 pm
  639.  
  640.           A possible alternative would be:
  641.                24_time - day_number/month_number
  642.  
  643.           This would display the time and date as:
  644.                13:31 - 17/6
  645.  
  646.           ***NOTE***  Do not make a time and date string that will
  647.           ever be longer than 35 characters in length for some
  648.           combination of time and date.
  649.  
  650.           If you take the time to create a new language module I will
  651.           include it in the next release of DougMenu if you email it
  652.           to me along with a brief description.  UUencode the file if
  653.           necessary.
  654.  
  655.      #message palette = <palette_number>
  656.           The <palette_number> parameter changes the default palette
  657.           for message boxes created with the #display command and
  658.           other non-error related message boxes.  The default message
  659.           palette is normally 3.  This statement will be ignored on
  660.           computers with monochrome display adapters.
  661.  
  662.      #noexit
  663.           Prevents exiting the menu system via the escape key.
  664.  
  665.      #noreturn
  666.           Normally, after an action which requires a batch file is
  667.           executed, the menu script is parsed again and all windows
  668.           that were open when the item was executed are reopened. 
  669.           This command prevents the reopening of windows when the
  670.           computer returns to the menu program. 
  671.  
  672.      #notime
  673.           Prevents the time and date from being displayed in the
  674.           header box.  The time and date will still be used in the
  675.           default screen saver message.
  676.     #palette <palette_number> = c1, c2, c3, c4, c5, c6, c7
  677.           This command can be used to redefine any of the DougMenu
  678.           palettes, 0-9.  Each palette is composed of 7 color values.
  679.  
  680.           c1 = background color for the window
  681.           c2 = foreground color for the item text in a window
  682.           c3 = foreground color for the title text in a window
  683.           c4 = foreground color for the border of an inactive window
  684.           c5 = foreground color for the border of an active window
  685.           c6 = selection bar foreground color
  686.           c7 = selection bar background color
  687.  
  688.      #quickselect
  689.           Causes the items in menu windows to be displayed in an
  690.           enumerated fashion.  The items in windows can then be
  691.           selected and executed by pressing the number which
  692.           corresponds to the item.
  693.  
  694.      #saver message = <string>
  695.           The string that is specified in this statement will replace
  696.           the time and date for the built in screen saver.  See
  697.           #timer.
  698.  
  699.      #shadow [= <background_color>,<foreground_color>]
  700.           This command will cause the active window on the screen to
  701.           have a shadow on the right and bottom side.  The optional
  702.           color value parameters can be used to specify the color of
  703.           the shadow.  The default color values for the shadow are 0,8
  704.           (grey on black).
  705.  
  706.      #timer [= <minutes>]
  707.        optional executable text
  708.        optional executable text
  709.        ...
  710.           This command defines an action that will occur if DougMenu
  711.           its idle too long.  The default idle time is 10 minutes but
  712.           this value can be specified using the <minutes> parameter. 
  713.           If this structure is followed by a block of executable text,
  714.           the block will be executed like normal executable text when
  715.           the timer is triggered.  If this structure is not followed
  716.           by executable text, DougMenu will automatically enter screen
  717.           saver mode instead.  The screen will be blanked and the time
  718.           and date will be drawn on the screen once every minute.  See
  719.           #saver message.
  720. [Execution Commands]
  721.  
  722.      Execution commands exist inside blocks of executable text.  The
  723.      commands will be indented with spaces or tabs, just like the rest
  724.      of the executable text.  These commands are going to be used
  725.      along with the batch file statements that commonly make up the
  726.      bulk of the item executable text.  However, except for the #if
  727.      family of commands and the #exit command, EXECUTION COMMANDS MUST
  728.      BE PLACED BEFORE ANY BATCH FILE TEXT.
  729.  
  730.      %<menu_title>
  731.           Open a menu window that has the specified title.
  732.  
  733.      #ask <variable_name>,<title>,[,<x_pos>,<y_pos>,<palette_number>]
  734.        "item name" = stuff to put in the variable
  735.        "a non-selectable subtitle"
  736.        "regular item with empty assignment" = 
  737.        ...     
  738.  
  739.           The ask command creates a query window to receive user input
  740.           which it assigns to a DougMenu variable.  Up to 10 DougMenu
  741.           variables can be assigned in the course of one item's
  742.           executable text.  Once a DougMenu variable is defined, it
  743.           cannot be redefined within the same block of executable
  744.           text.  If a user completes or aborts from a block of
  745.           executable text, all DougMenu variables are cleared. 
  746.           DougMenu variables are accessed just like DOS environment
  747.           variables.
  748.  
  749.           There are two ways the #ask command can be used:
  750.  
  751.           1)   If the next line following the #ask command begins with
  752.                a quote character, the query window will resemble a
  753.                menu window and will allow the user to select from a
  754.                list of items.  Each selectable item has an associated
  755.                value that will be assigned to the DougMenu variable if
  756.                the item is chosen.  There are three format types for
  757.                the body lines of a query window.  An example of each
  758.                format type follows the #ask command prototype above.  
  759.  
  760.           2)   If the #ask command is not followed by a line that
  761.                starts with a quote character, the #ask command will
  762.                open a query window that will allow the user to enter a
  763.                string.  The value the user enters will be assigned to
  764.                the DougMenu variable name.
  765. #display[,<x_position>,<y_position>,<palette_number>]
  766.        "Text to be displayed"
  767.        "Text to be displayed"
  768.        ...
  769.           This command will display a text box when executed.  The box
  770.           will be filled with the quoted that directly following the
  771.           #display command line.  The window will size itself
  772.           according to the number of text lines and longest line of
  773.           text.  DougMenu variables and DOS environment variables can
  774.           be used in the text.  Once the box is displayed, DougMenu
  775.           will wait for a key press before continuing.
  776.  
  777.      #exit
  778.           When this command is encountered, two things can happen,
  779.           depending on the position of the #exit command in the
  780.           executable text.
  781.  
  782.           If the #exit command was not preceded by any batch file
  783.           text, DOUGMENU.EXE stops and returns an errorlevel of 1 to
  784.           DMENU.BAT.  This should cause DMENU.BAT to take the user
  785.           back whatever started DMENU.BAT.  
  786.  
  787.           If the #exit command was preceded by batch file text,
  788.           DOUGMENU.EXE makes a temporary batch file containing the
  789.           batch file text that was before the #exit command, and then
  790.           returns an errorlevel of 2 to DMENU.BAT.  This should cause
  791.           DMENU.BAT to launch the temporary batch file without the
  792.           CALL statement.  After the temporary batch file is
  793.           completed, the user will be returned to whatever started
  794.           DMENU.BAT.
  795.  
  796.      #if <conditional statement>
  797.      #if_member [!][servername/]<group>
  798.      #if_username [!][servername/]<username>
  799.      #if_exist [!]<path>
  800.      #endif
  801.      #else
  802.           All of these function work like their parsing command
  803.           counterparts, but instead of controlling the parsing of the
  804.           menu script, they control what statements in the executable
  805.           text get read.  Also, these #if statement can use DougMenu
  806.           variables as well as DOS environment variables.
  807.  
  808.      #floppy <variable_name>
  809.           Searches through all floppy drives to find a formatted
  810.           diskette.  The drive letter with a colon will by placed in
  811.           the DougMenu variable specified by the <variable_name>
  812.           parameter.  If no disk is found, an error message appears,
  813.           and then the user is returned to the menus.
  814.     #logout
  815.           The computer is logged out of all Netware servers.  This
  816.           will not exit users from DougMenu.  This can cause critical
  817.           drive mappings to disappear.  The execution of the
  818.           executable text will continue after this command.
  819.  
  820.      #password <string>
  821.           The user is requested to enter a password.  If the password
  822.           is incorrect, the user is informed and returned to the menu. 
  823.           If it is correct, the execution of the item continues.  The
  824.           user input will not be displayed on the screen.
  825.  
  826.      #reboot
  827.           This will immediately reboot the computer when executed.
  828.  
  829.      #space <drive> <value>
  830.           This command checks a drive for free storage space and
  831.           compares the amount of available bytes in K with the <value>
  832.           parameter.  A value of 10 would mean to check the specified
  833.           drive for 10k bytes of free space.  If there is sufficient
  834.           free space, the execution will continue past this command. 
  835.           If it is not, the user is informed of the lack of drive
  836.           space and returned to the menus. 
  837.  
  838. [Logging Out of Netware Servers]
  839.  
  840.      The #logout execution command provides a facility for
  841.      disconnecting from Netware servers and is often used in
  842.      conjunction with the #exit or #reboot command.  However, many
  843.      people have problems because they want to keep DMENU.BAT on the
  844.      server.  After the #logout command, all drive mappings are
  845.      removed and COMMAND.COM will generate a "batch file not found"
  846.      error message when you return to DOS.  To avoid this problem, you
  847.      can:
  848.  
  849.      1)   If the temporary batch files are placed on a local drive,
  850.           the following executable text will work:
  851.                Logout Item
  852.                  logout  ;don't use a # before this logout
  853.                  #exit
  854.           This will create a batch file with the command logout in it
  855.           and then the batch file will be run from the local drive.
  856.  
  857.      2)   If the temporary batch files must be located on the server,
  858.           DMENU.BAT and all temporary batch files could be located in
  859.           the login directory on the server. 
  860.  
  861.      I realize that many people consider these two solutions to be
  862.      less than optimal.  I will attempt to provide a more graceful
  863.      solution in the next release of DougMenu.  But wait, how will you
  864.      know when the next version of DougMenu is available?  Well,
  865.      register your copy and I'll notify you when it is.
  866.           
  867.                             ORDER.TXT
  868.                              (v1.77)
  869.                                 
  870. The freely distributed DougMenu package is still and will
  871. continue to be available at no charge.  But since I am trying to
  872. set myself up as an independent software developer, I need to get
  873. money some how.  I am making the following services and products
  874. available with the hope that some people will find them to be
  875. useful.  At the end of this document is an order form which can
  876. be used to order these products. 
  877.  
  878. DougMenu Registration
  879.      This service is available for anyone who wants to be sure
  880.      that they are notified when new DougMenu products are
  881.      available. People who purchase this service will be notified
  882.      via email or postal mail whenever new products become
  883.      available.  This service lasts for 24 months. (US$30)
  884.  
  885. DougMenu Deluxe Registration
  886.      This service is just like the regular registration, but
  887.      instead of just notifying customers when new products become
  888.      available, I will send the new shareware and freeware
  889.      products to them on a diskette. (US$100)
  890.  
  891. The DougMenu Manual
  892.      No more computer printouts, this is a bound 50+ page manual
  893.      describing how to install, configure, and write menu scripts
  894.      for DougMenu.  It is much more extensive than the text file
  895.      that come with DougMenu.  It comes with a diskette of sample
  896.      menu scripts. (US$70)
  897.  
  898. DougMenu Source Code
  899.      I know.  I used to give this out for free.  I really can't
  900.      afford to do that any more.  But I am still willing to make
  901.      it available.  The source code compiles with Borland C++ 3.1
  902.      and the Netware Client API. (US$100)
  903.  
  904. DougMenu Support Service
  905.      I will answer questions about DougMenu installation,
  906.      configuration, and script writing via email or telephone for
  907.      customers who purchase this service.  I will also make
  908.      special customized versions of DougMenu available to these
  909.      clients.  This service lasts for 12 months. (US$50)
  910.  
  911.  
  912.  
  913.  
  914. *****************************************************************
  915. *****************************************************************
  916. *****                                                       *****
  917. *****                  DougMenu Order Form                  *****
  918. *****                        (1.77)                         *****
  919. *****************************************************************
  920. *****************************************************************
  921.  
  922. Prod.#    Description                   Cost      Qty       Total
  923.  
  924. DMREG1    DougMenu Registration         US$30     ___       _____
  925.  
  926. DMREG2    DougMenu Deluxe Registration  US$100    ___       _____
  927.  
  928. DMDSRC    DougMenu Source Code          US$100    ___       _____
  929.  
  930. DMDMAN    DougMenu Manual               US$70     ___       _____
  931.  
  932. DMSUPP    DougMenu Support Service      US$50     ___       _____
  933.  
  934.                                         Total Charge:    ________
  935.  
  936.  
  937. Ohio residents must add 7.5% state sales tax if they buy the
  938. manual.  All prices include shipping if applicable.  When anyone
  939. sends me money, I will send them a copy of the most recent
  940. version of DougMenu.
  941.  
  942. Make checks, money orders, or purchase orders payable to Douglas
  943. Bell and send them to:
  944.  
  945.           Douglas Bell
  946.           1726 Coventry Road #3
  947.           Cleveland Heights, Ohio 44118-1130
  948.           U.S.A.
  949.  
  950.  
  951. Further inquiries can be directed to:
  952.  
  953.           email:         dm@wariat.org 
  954.           telephone:     +1 216 371 7772
  955.  
  956.